#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
//    QMenuBar* menubar = new QMenuBar();
//    this->setMenuBar(menubar);
    // 对于上述代码，如果我们创建的项目没有勾选自动生成ui文件，是没有什么问题的。
    // 但是一旦勾选了自动生成ui文件，则上述代码就会导致内存泄漏
    // 因为我们一旦勾选了自动生成ui文件，Qt就会给我们自动创建一个QMenuBar
    // 而当我们设置新的MenuBar进来的时候，此时就会导致旧的MenuBar脱离了Qt的对象树
    // 从而导致旧的QMenuBar无法自动释放了。

    // 如果想要避免上述的内存泄漏情况，就要换一种方式创建QMenuBar
    // 也就是直接获取ui文件自己自动创建的QMenuBar
    QMenuBar* menubar = this->menuBar(); // 如果this->的menuBar已经存在，则直接返回，而如果不存在，则会先创建在返回
    this->setMenuBar(menubar);
}

MainWindow::~MainWindow()
{
    delete ui;
}

